索引是什么,索引的数据结构.B树,B+树

您所在的位置:网站首页 数据结构 b树 索引是什么,索引的数据结构.B树,B+树

索引是什么,索引的数据结构.B树,B+树

2023-08-17 02:50| 来源: 网络整理| 查看: 265

文章目录 一、索引是什么?二、索引要解决的问题三、索引的应用场景四、索引的数据结构[B+树]1.为什么不用哈希表?2.为什么不用二叉搜索树?3. 什么是B-树?(这里不是B减树,而是B 树 )4.什么是B+树? 五 、在建索引时应遵循什么样的原则?

一、索引是什么? 通俗来说,索引就像一本书的目录,它可以帮助你快速的找到你想要了解的内容.官方解释是索引是帮助MySql更高效的获取数据的数据结构常见的索引分为: a)主键索引(primary key) b)唯一索引(unique) c)普通索引(index) d)全文索引(fulltext)–解决中子文索引问题 二、索引要解决的问题

1.快速取数据 2.保证数据记录的唯一性 3.实现表与表之间的参照完整性 4.在使用order by,group by子句进行数据检索时,利用索引可以减少排序和分组的时间

三、索引的应用场景

查询字段多的地方,数据量非常大的地方

四、索引的数据结构[B+树]

索引的数据结构是B+树,下面会先介绍B-树,再介绍B+树

1.为什么不用哈希表?

哈希表的优点是查询某个元素的时间复杂度近似为O(1),但是如果对哈希表进行范围查找只能遍历全表,这样的速度肯定不能满足数据量大的数据库.

2.为什么不用二叉搜索树?

a) 二叉搜索树对于根节点的选取有很高的要求,根节点选取不好会大大影响查询效率,即使选取好了是一个满二叉树,他的查询效率跟树的深度有关,当数据量大树的深度深的时候,查询速度也会很慢(1百万的数据量,log2n约等于20次磁盘IO,时间20*10=0.2s).

b)二叉搜索树对于HASH表来说查询范围效果更好 ,但是他需要从根节点进行多次遍历,查询效率也不高.

3. 什么是B-树?(这里不是B减树,而是B 树 )

在这里插入图片描述 B树是一种多叉平衡树,其有点是每一层多个分叉,但是每个分叉之间又存在连系,每个节点都包含键值和数据,数据按照键值大小排列. B树每个节点存储数据,如果将B树存到内存中会占用很大的内存空间. 同样的B-树也不满足针对范围的快速查找,所以在此基础上引入了一种新的树,B+树.

4.什么是B+树?

B+树是MySql对于数据存储使用的数据结构 在这里插入图片描述 B+树的特点: a)只有叶子节点存储数据 b) 非叶子节点存储键值 c)叶子节点采用链式存储结构 B+树的优点:由于B+树的叶子节点存储了所有数据并且按照键值有序进行链式存储,当通过满足排序树的键值查找到对应叶子节点,就可以通过链表来查询相应范围,大大提高了查询速度,并且可以将只存储键值的B+树存储在内存中,将数据存储在磁盘中,可以大大减少内存的空间占用.B+树的深度也比二叉树的深度小很多,进行查找是效率也会高出很多.

五 、在建索引时应遵循什么样的原则?

遵循的原则: 1,需要经常进行搜索的列 2,作为主键的列,该列的查找具有唯一性 3,作为外键的列,加快表与表的连接速度 4,经常需要进行范围搜索的列 5,经常使用在where子句中的列上面创建索引,加快条件的判断速度 不应该创建索引的列: 1,查询中很少使用的列 2,很少数据值的列



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3